package com.cj.tool

import android.annotation.SuppressLint
import android.app.Application
import android.content.Context
import com.android.tony.defenselib.DefenseCrash
import com.android.tony.defenselib.handler.IExceptionHandler
import com.baidu.mapapi.CoordType
import com.baidu.mapapi.SDKInitializer
import com.cj.tool.utils.LogUtil

/**
 * ━━━━━━神兽出没━━━━━━
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　　┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　┃
 * 　　┃　　　　　　　┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛Code is far away from bug with the animal protecting
 * 　　　　┃　　　┃    神兽保佑,代码无bug
 * 　　　　┃　　　┃
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━感觉萌萌哒━━━━━━
 *
 * Created by yi on 2021/3/2.
 */
class MyApplication : Application(), IExceptionHandler {

    companion object {
        @SuppressLint("StaticFieldLeak")
        lateinit var context: Context
    }


    override fun onCreate() {
        super.onCreate()
        context = applicationContext
        //在使用SDK各组件之前初始化context信息，传入ApplicationContext   
        SDKInitializer.initialize(this)
        //自4.3.0起，百度地图SDK所有接口均支持百度坐标和国测局坐标，用此方法设置您使用的坐标类型.
        //包括BD09LL和GCJ02两种坐标，默认是BD09LL坐标。
        SDKInitializer.setCoordType(CoordType.BD09LL)
        //日常崩溃拦截
        //DefenseCrash.initialize()
        //DefenseCrash.install(this)
    }

    override fun onCaughtException(thread: Thread?, throwable: Throwable, b: Boolean) {
        //崩溃发生时打印错误信息  此处可做上传处理
        LogUtil.e("拦截到崩溃: " + throwable.message)
    }

    override fun onEnterSafeMode() {
        //崩溃后的loop回调 暂不处理
    }

    override fun onMayBeBlackScreen(throwable: Throwable) {
        //严重崩溃导致的屏幕黑屏卡死  此时最好销毁界面 重启应用
        LogUtil.e("拦截到严重崩溃: " + throwable.message)
    }
}